SpringBoot文件上传限制

By youfang

SpringBoot文件上传限制

无法捕获MaxUploadSizeExceededException异常的问题

1
2
3
4
spring.servlet.multipart.max-file-size = 50MB
spring.servlet.multipart.max-request-size = 50MB
spring.servlet.multipart.resolve-lazily=true #设置为懒加载,不然依然会捕获不到异常
server.tomcat.max-swallow-size = 100MB # 最重要的是这一行,可设置为 -1 不作限制

注意: 上面最重要的是要配置内嵌的 tomcat 的最大吞吐量即 max-swallow-size,可以设置 -1 不限制,也可以设置一下比较大的数字这里微酷设置 100M。
当上传文件超 tomcat 的大小限制后会先于 Controller 触发异常,所以这时我们的异常处理类无法捕获 Controller 层的异常了,这就是无法捕获到异常的根本原因。

配置全局异常类,用于捕获MaxUploadSizeExceededException 异常

1
2
3
4
5
6
7
8
9
@RestControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(MultipartException.class)
public Result<String> uploadExcepttion(MultipartException e){
return Result.error(500,"上传失败");
}

}